Apache Commons IO লাইব্রেরির IOUtils ক্লাস একটি খুবই জনপ্রিয় এবং শক্তিশালী টুল যা Input/Output streams (I/O স্ট্রিম) এর সাথে কাজ করার জন্য ব্যবহৃত হয়। এটি স্ট্রিম থেকে ডেটা পড়া, স্ট্রিমে ডেটা লেখা, স্ট্রিম কপি করা, স্ট্রিম ক্লোজ করা এবং আরও অনেক কাজ সহজ করে তোলে।
IOUtils ক্লাসটি File I/O এবং Stream I/O সম্পর্কিত কার্যাবলী যেমন স্ট্রিম কপি, স্ট্রিমের মধ্যে ডেটা পড়া এবং লেখা, ফাইলের কন্টেন্ট পড়া, স্ট্রিম ক্লোজ করা ইত্যাদি কার্যক্রম সহজ করে তোলে।
এই মেথডটি ইনপুট স্ট্রিম থেকে ডেটা নিয়ে আউটপুট স্ট্রিমে কপি করে।
উদাহরণ: স্ট্রিম কপি করা
import org.apache.commons.io.IOUtils;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class IOUtilsCopyExample {
public static void main(String[] args) {
try (FileInputStream inputStream = new FileInputStream("source.txt");
FileOutputStream outputStream = new FileOutputStream("destination.txt")) {
// ইনপুট স্ট্রিম থেকে আউটপুট স্ট্রিমে কপি করা
IOUtils.copy(inputStream, outputStream);
System.out.println("স্ট্রিম কপি সফল!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
আউটপুট:
স্ট্রিম কপি সফল!
toString() মেথডটি স্ট্রিম থেকে ডেটা নিয়ে একটি স্ট্রিং আউটপুট হিসেবে ফেরত দেয়।
উদাহরণ: স্ট্রিম থেকে ডেটা পড়া
import org.apache.commons.io.IOUtils;
import java.io.FileInputStream;
import java.io.IOException;
public class IOUtilsToStringExample {
public static void main(String[] args) {
try (FileInputStream inputStream = new FileInputStream("source.txt")) {
// ইনপুট স্ট্রিম থেকে স্ট্রিং রূপে ডেটা পড়া
String content = IOUtils.toString(inputStream, "UTF-8");
System.out.println("স্ট্রিং হিসেবে ডেটা: " + content);
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
আউটপুট:
স্ট্রিং হিসেবে ডেটা: (source.txt ফাইলের কন্টেন্ট)
write() মেথডটি ইনপুট ডেটাকে আউটপুট স্ট্রিমে লিখে।
উদাহরণ: স্ট্রিমে ডেটা লেখা
import org.apache.commons.io.IOUtils;
import java.io.FileOutputStream;
import java.io.IOException;
public class IOUtilsWriteExample {
public static void main(String[] args) {
try (FileOutputStream outputStream = new FileOutputStream("destination.txt")) {
// আউটপুট স্ট্রিমে ডেটা লেখা
String data = "Hello, World!";
IOUtils.write(data, outputStream, "UTF-8");
System.out.println("স্ট্রিমে ডেটা লেখা সফল!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
আউটপুট:
স্ট্রিমে ডেটা লেখা সফল!
closeQuietly() মেথডটি স্ট্রিম ক্লোজ করতে ব্যবহৃত হয়। এটি স্ট্রিম ক্লোজ করার সময় কোনো IOException ছুঁড়ে না, যার ফলে আপনি সহজে স্ট্রিম ক্লোজ করতে পারেন।
উদাহরণ: স্ট্রিম ক্লোজ করা
import org.apache.commons.io.IOUtils;
import java.io.FileInputStream;
import java.io.IOException;
public class IOUtilsCloseQuietlyExample {
public static void main(String[] args) {
FileInputStream inputStream = null;
try {
inputStream = new FileInputStream("source.txt");
// কিছু ডেটা পড়া বা অন্যান্য কাজ
System.out.println("ফাইল পড়া হচ্ছে...");
} catch (IOException e) {
e.printStackTrace();
} finally {
// স্ট্রিম ক্লোজ করা
IOUtils.closeQuietly(inputStream);
System.out.println("স্ট্রিম বন্ধ করা হয়েছে!");
}
}
}
এখানে:
আউটপুট:
ফাইল পড়া হচ্ছে...
স্ট্রিম বন্ধ করা হয়েছে!
Apache Commons IO লাইব্রেরির IOUtils ক্লাসটি I/O (Input/Output) অপারেশনগুলিকে সহজ এবং কার্যকরী করে তোলে। এটি স্ট্রিম কপি, স্ট্রিম থেকে ডেটা পড়া, স্ট্রিমে ডেটা লেখা, স্ট্রিম ক্লোজ করা, এবং আরও অনেক কার্যাবলী সহজ করে দেয়। IOUtils ক্লাসের সাহায্যে আপনি সহজে স্ট্রিম এবং ফাইল অপারেশন পরিচালনা করতে পারেন, যা কোডের পাঠযোগ্যতা, রক্ষণাবেক্ষণযোগ্যতা এবং কার্যক্ষমতা বাড়ায়।
Apache Commons IO লাইব্রেরির IOUtils ক্লাস Java-তে ইনপুট/আউটপুট (IO) কার্যক্রমের জন্য একটি অত্যন্ত শক্তিশালী এবং সহজ ইউটিলিটি সরবরাহ করে। এটি স্ট্রিম, বাইট অ্যারে, এবং স্ট্রিং-এর সাথে কাজ করার জন্য অনেক দরকারি মেথড প্রদান করে। IOUtils এর মূল উদ্দেশ্য হল IO অপারেশনগুলিকে আরো সোজা এবং কার্যকরী করা, বিশেষ করে যখন আপনি ফাইল পড়া, লেখার কাজ, বা ইনপুট এবং আউটপুট স্ট্রিমের মধ্যে ডাটা কপি করার কাজ করছেন।
এখানে আমরা IOUtils এর ভূমিকা এবং প্রয়োজনীয়তা নিয়ে আলোচনা করব।
IOUtils ক্লাসের মূল ভূমিকা হলো Java ইনপুট এবং আউটপুট স্ট্রিম অপারেশনগুলোকে সহজ, দ্রুত, এবং নিরাপদ করা। এই ক্লাসটি সাধারণ Java IO API-এর কিছু মৌলিক এবং প্রচলিত অপারেশন যেমন স্ট্রিম কপি, স্ট্রিম ক্লোজ, স্ট্রিং রিডিং, এবং বাইট অ্যারে থেকে ইনপুট স্ট্রিমে ডাটা পড়া এবং রাইট করার কাজগুলো সহজ করে তোলে।
Java-তে ইনপুট এবং আউটপুট স্ট্রিম পরিচালনা করা বেশ জটিল হতে পারে, কারণ এটি বিভিন্ন স্ট্রিম টাইপ এবং বড় আকারের ডাটা স্ট্রিম সম্পর্কিত কাজের জন্য সঠিক হ্যান্ডলিং প্রয়োজন। Apache Commons IO এর IOUtils এই সমস্ত কাজকে সরল করে তোলে এবং বেশ কিছু সুবিধা প্রদান করে:
import org.apache.commons.io.IOUtils;
import java.io.*;
public class StreamCopyExample {
public static void main(String[] args) {
try (InputStream inputStream = new FileInputStream("input.txt");
OutputStream outputStream = new FileOutputStream("output.txt")) {
// Copy data from input stream to output stream
IOUtils.copy(inputStream, outputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
IOUtils.copy()
মেথডটি ইনপুট স্ট্রিম থেকে আউটপুট স্ট্রিমে ডাটা কপি করার জন্য ব্যবহৃত হয়েছে।import org.apache.commons.io.IOUtils;
import java.io.*;
public class StreamToStringExample {
public static void main(String[] args) {
try (InputStream inputStream = new FileInputStream("input.txt")) {
// Read content of the file into a String
String content = IOUtils.toString(inputStream, "UTF-8");
System.out.println(content);
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
IOUtils.toString()
মেথডটি ইনপুট স্ট্রিম থেকে স্ট্রিং আকারে ডাটা পড়েছে।import org.apache.commons.io.IOUtils;
import java.io.*;
public class ByteArrayToStreamExample {
public static void main(String[] args) {
try {
byte[] byteArray = "Hello, Apache Commons IO!".getBytes("UTF-8");
// Convert byte array to input stream
InputStream inputStream = IOUtils.toInputStream(new String(byteArray), "UTF-8");
// Print the content of the input stream
String content = IOUtils.toString(inputStream, "UTF-8");
System.out.println(content);
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
IOUtils.toInputStream()
মেথডটি বাইট অ্যারে থেকে ইনপুট স্ট্রিম তৈরি করতে ব্যবহৃত হয়েছে।import org.apache.commons.io.IOUtils;
import java.io.*;
public class CloseStreamExample {
public static void main(String[] args) {
InputStream inputStream = null;
try {
inputStream = new FileInputStream("input.txt");
// Process input stream (for example)
String content = IOUtils.toString(inputStream, "UTF-8");
} catch (IOException e) {
e.printStackTrace();
} finally {
// Properly close the input stream
IOUtils.closeQuietly(inputStream);
}
}
}
এখানে:
IOUtils.closeQuietly()
মেথডটি ইনপুট স্ট্রিম ক্লোজ করার জন্য ব্যবহৃত হয়েছে, যা কোনো এক্সেপশন ছুঁড়ে না দেয়।Apache Commons IO এর IOUtils ক্লাস Java-তে ইনপুট এবং আউটপুট স্ট্রিম সম্পর্কিত বিভিন্ন সাধারণ এবং প্রয়োজনীয় কার্যক্রমকে সহজ এবং কার্যকরী করে তোলে। এটি ফাইল কপি, স্ট্রিম রিড এবং রাইট, বাইট অ্যারে থেকে স্ট্রিম তৈরি, এবং স্ট্রিম ক্লোজ করার মতো কাজগুলোতে অত্যন্ত সহায়ক। এর মাধ্যমে Java IO কাজগুলো আরও দ্রুত, নিরাপদ এবং কোড রিডেবিলিটি উন্নত করা সম্ভব। IOUtils স্ট্রিম হ্যান্ডলিংয়ের ক্ষেত্রে অনেক কোড কমিয়ে দেয় এবং স্ট্রিম সম্পর্কিত প্রচলিত সমস্যাগুলির সমাধান সরবরাহ করে।
Apache Commons IO লাইব্রেরি InputStream এবং OutputStream এর মধ্যে ডেটা কপি করার জন্য সহজ এবং কার্যকরী মেথড সরবরাহ করে। এতে স্ট্রিম থেকে ডেটা পড়া এবং লেখা অনেক সহজ হয়ে ওঠে, এবং পারফরম্যান্সের দিক থেকে এটি স্ট্যান্ডার্ড Java API এর তুলনায় অনেক দ্রুত কাজ করে।
IOUtils ক্লাসটি একটি খুবই গুরুত্বপূর্ণ ক্লাস যা InputStream থেকে OutputStream এ ডেটা কপি করার জন্য ব্যবহার করা হয়। এটি এমনকি বড় ডেটা সেটের ক্ষেত্রে পারফরম্যান্স অপটিমাইজেশনও করে।
Apache Commons IO লাইব্রেরি IOUtils ক্লাসের copy()
মেথডের মাধ্যমে স্ট্রিম থেকে স্ট্রিমে ডেটা কপি করতে সহজে কাজ করতে দেয়।
IOUtils.copy()
মেথডএই মেথডটি একটি InputStream থেকে ডেটা পড়তে থাকে এবং তা একটি OutputStream এ লিখে দেয়। এটি কার্যকরীভাবে ডেটার কপি তৈরি করে, এবং বড় ফাইল বা স্ট্রিমের জন্য খুবই কার্যকরী।
import org.apache.commons.io.IOUtils;
import java.io.*;
public class StreamCopyExample {
public static void main(String[] args) {
InputStream inputStream = null;
OutputStream outputStream = null;
try {
// ফাইলের InputStream তৈরি
inputStream = new FileInputStream("source.txt");
// OutputStream তৈরি
outputStream = new FileOutputStream("destination.txt");
// InputStream থেকে OutputStream এ কপি করা
IOUtils.copy(inputStream, outputStream);
System.out.println("ডেটা কপি করা হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// স্ট্রিম বন্ধ করা
if (inputStream != null) inputStream.close();
if (outputStream != null) outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
FileInputStream
: এটি একটি InputStream যা ফাইল থেকে ডেটা পড়ে।FileOutputStream
: এটি একটি OutputStream যা ফাইলের মধ্যে ডেটা লেখে।IOUtils.copy(inputStream, outputStream)
: এই মেথডটি InputStream থেকে OutputStream এ ডেটা কপি করে।ডেটা কপি করা হয়েছে!
এখন, বড় ডেটা সেট বা ফাইল কপি করার ক্ষেত্রে, পারফরম্যান্স উন্নত করতে IOUtils.copy() মেথড একটি buffer ব্যবহার করতে পারে। এটি ফাইল বা ডেটা স্ট্রিমের কার্যকারিতা বাড়িয়ে দেয়।
import org.apache.commons.io.IOUtils;
import java.io.*;
public class BufferedStreamCopyExample {
public static void main(String[] args) {
InputStream inputStream = null;
OutputStream outputStream = null;
try {
// BufferedInputStream তৈরি
inputStream = new BufferedInputStream(new FileInputStream("source.txt"));
// BufferedOutputStream তৈরি
outputStream = new BufferedOutputStream(new FileOutputStream("destination.txt"));
// BufferedInputStream থেকে BufferedOutputStream এ কপি করা
IOUtils.copy(inputStream, outputStream);
System.out.println("ডেটা কপি করা হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// স্ট্রিম বন্ধ করা
if (inputStream != null) inputStream.close();
if (outputStream != null) outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
যদি আপনার কাছে খুব বড় ডেটা সেট থাকে এবং আপনি স্ট্রিম কপি করার সময় large file হ্যান্ডলিং এর জন্য আরও উন্নত পারফরম্যান্স চান, তাহলে IOUtils.copyLarge()
মেথড ব্যবহার করতে পারেন। এটি InputStream থেকে OutputStream এ ডেটা কপি করার সময় বড় ডেটার ক্ষেত্রে আরো কার্যকরী এবং কার্যক্ষম।
IOUtils.copyLarge()
উদাহরণimport org.apache.commons.io.IOUtils;
import java.io.*;
public class LargeFileCopyExample {
public static void main(String[] args) {
InputStream inputStream = null;
OutputStream outputStream = null;
try {
// বড় ফাইলের InputStream
inputStream = new FileInputStream("largeSourceFile.txt");
// OutputStream
outputStream = new FileOutputStream("largeDestinationFile.txt");
// Copy large files
IOUtils.copyLarge(inputStream, outputStream);
System.out.println("বড় ফাইল কপি করা হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (inputStream != null) inputStream.close();
if (outputStream != null) outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
IOUtils.copyLarge()
মেথডটি InputStream থেকে OutputStream এ বড় ফাইল কপি করার জন্য ব্যবহৃত হয়। এটি ডেটা স্ট্রিম কপি করার সময় বড় ফাইল বা বড় ডেটা সেটের জন্য আরও ভাল পারফরম্যান্স প্রদান করে।Apache Commons IO লাইব্রেরি InputStream থেকে OutputStream এ ডেটা কপি করার জন্য খুবই সহজ এবং কার্যকরী মেথড সরবরাহ করে। IOUtils.copy(), IOUtils.copyLarge(), এবং buffered streams ব্যবহার করে আপনি সহজেই ডেটা কপি করতে পারেন, এবং যদি বড় ফাইল বা ডেটা স্ট্রিমের সাথে কাজ করেন তবে আপনার পারফরম্যান্স আরো উন্নত হবে। Apache Commons IO ফাইল এবং স্ট্রিম ম্যানিপুলেশনকে অনেক সহজ করে তোলে, যা জাভা ডেভেলপারদের জন্য একটি গুরুত্বপূর্ণ টুল।
Apache Commons IO লাইব্রেরি Reader এবং Writer ক্লাসের ব্যবস্থাপনায় সহায়তা করে, যা Java I/O API এর উপরে নির্ভর করে। এই লাইব্রেরি InputStreamReader, OutputStreamWriter, এবং BufferedReader, BufferedWriter এর মতো সাধারণ Java ক্লাসের কার্যকারিতা বাড়িয়ে তোলে। এর মাধ্যমে আপনি আরও সহজ এবং কার্যকরভাবে টেক্সট ফাইল পড়া ও লেখা করতে পারেন।
এখানে, আমরা Reader এবং Writer ব্যবস্থাপনা নিয়ে আলোচনা করব এবং Apache Commons IO লাইব্রেরি ব্যবহার করে কিভাবে এগুলো আরও সহজভাবে ব্যবহার করা যায় তা দেখব।
BufferedReader এবং BufferedWriter দুটি জনপ্রিয় ক্লাস যা Java এর Reader এবং Writer ইন্টারফেসের উপরে কাজ করে। এগুলি স্ট্রিমের মাধ্যমে ফাইল বা ডেটা রিড এবং রাইট করার সময় পারফরম্যান্স উন্নত করতে সহায়তা করে, কারণ তারা বাফারিংয়ের মাধ্যমে ডেটা প্রক্রিয়া করে।
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;
import java.io.File;
import java.io.IOException;
public class BufferedReaderExample {
public static void main(String[] args) {
// Create a File object pointing to a file
File file = new File("example.txt");
try {
// Using LineIterator (BufferedReader equivalent) to read file line by line
LineIterator it = FileUtils.lineIterator(file, "UTF-8");
// Iterate over the file lines and print each line
while (it.hasNext()) {
System.out.println(it.nextLine());
}
// Close the iterator to free resources
LineIterator.closeQuietly(it);
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class BufferedWriterExample {
public static void main(String[] args) {
// Create a File object for the destination file
File file = new File("output.txt");
try {
// Using FileUtils.writeStringToFile() to write a string to a file
String content = "This is an example text for BufferedWriter example.";
FileUtils.writeStringToFile(file, content, "UTF-8");
System.out.println("Text has been written to the file.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
FileReader এবং FileWriter Java এর মূল I/O ক্লাস, যা Character-based stream এর মাধ্যমে ফাইল রিড এবং রাইট করতে ব্যবহৃত হয়। তবে Apache Commons IO লাইব্রেরির FileUtils এবং অন্যান্য ইউটিলিটি ক্লাস ব্যবহার করে আমরা আরও সহজে এবং কার্যকরভাবে ফাইলের সাথে কাজ করতে পারি।
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileReaderExample {
public static void main(String[] args) {
// Create a File object for the file to be read
File file = new File("example.txt");
try {
// Using FileUtils to read the file content into a String
String content = FileUtils.readFileToString(file, "UTF-8");
System.out.println("File content:\n" + content);
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileWriterExample {
public static void main(String[] args) {
// Create a File object for the destination file
File file = new File("output.txt");
try {
// Using FileUtils to write content to a file
String content = "This is a test content written using FileWriter.";
FileUtils.writeStringToFile(file, content, "UTF-8");
System.out.println("Content written to the file.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
FileInputStream এবং FileOutputStream ব্যবহার করে বাইনারি ফাইল রিড এবং রাইট করা যায়। Apache Commons IO লাইব্রেরি এই স্ট্রিমগুলির উপর আরও সহজ ইউটিলিটি ক্লাস সরবরাহ করে যা ফাইল ম্যানিপুলেশনকে আরও সহজ করে তোলে।
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileInputStreamExample {
public static void main(String[] args) {
// Create a File object for the file to be read
File file = new File("example.txt");
try {
// Read content of the file using FileUtils (InputStream)
byte[] content = FileUtils.readFileToByteArray(file);
System.out.println("File content read in byte format:");
for (byte b : content) {
System.out.print((char) b);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileOutputStreamExample {
public static void main(String[] args) {
// Create a File object for the destination file
File file = new File("output.txt");
try {
// Write byte content to file using FileUtils (OutputStream)
byte[] content = "This is a binary file content example.".getBytes();
FileUtils.writeByteArrayToFile(file, content);
System.out.println("Binary content written to file.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
BufferedReader এবং BufferedWriter ব্যবহার করে Buffered I/O এর মাধ্যমে ফাইল রিড এবং রাইট করা হয়, যা পারফরম্যান্সে উল্লেখযোগ্য উন্নতি আনে। স্ট্রিমের মাধ্যমে ডেটা একবারে ব্লক আকারে পড়া এবং লেখা হয়, যা ছোট ছোট রিড/রাইট অপারেশনের তুলনায় অনেক দ্রুত।
import java.io.*;
public class BufferedReaderWriterExample {
public static void main(String[] args) throws IOException {
// Create a BufferedReader to read the file efficiently
BufferedReader reader = new BufferedReader(new FileReader("example.txt"));
String line;
// Create a BufferedWriter to write the output file efficiently
BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"));
// Read and write line by line
while ((line = reader.readLine()) != null) {
writer.write(line);
writer.newLine(); // Add a new line after each line of text
}
// Close the streams
reader.close();
writer.close();
System.out.println("File copied using BufferedReader and BufferedWriter.");
}
}
এখানে:
Apache Commons IO লাইব্রেরি ব্যবহার করে Reader এবং Writer ব্যবস্থাপনা অনেক সহজ হয়ে যায়। BufferedReader এবং BufferedWriter এর মাধ্যমে ফাইল পড়া এবং লেখা দ্রুত করা যায়, FileUtils এবং IOUtils এর মতো ইউটিলিটি ক্লাস ব্যবহার করে আপনি সহজেই ফাইলের কন্টেন্ট রিড/রাইট এবং কপি করতে পারেন। Java এর বিল্ট-ইন I/O ক্লাসগুলির কার্যক্ষমতা বাড়াতে Apache Commons IO অত্যন্ত সহায়ক, বিশেষত যখন বড় বা বাইনারি ফাইলের সাথে কাজ করতে হয়।
Apache Commons IO লাইব্রেরি Java-তে Streams এবং Readers এর মধ্যে ডেটা ট্রান্সফার সহজ এবং কার্যকরী করে তোলে। স্ট্রিম এবং রিডার সাধারণত ডেটা পড়া এবং লেখার জন্য ব্যবহৃত হয়, তবে কখনও কখনও আপনাকে স্ট্রিম থেকে রিডারে ডেটা পাঠাতে বা রিডার থেকে স্ট্রিমে ডেটা পাঠাতে হতে পারে। Apache Commons IO লাইব্রেরি এই ধরনের ডেটা ট্রান্সফারের জন্য অনেক সহজ এবং দ্রুত উপায় প্রদান করে।
এখানে Streams এবং Readers এর মধ্যে ডেটা ট্রান্সফার করার কিছু গুরুত্বপূর্ণ উদাহরণ এবং পদ্ধতি আলোচনা করা হবে।
Java-তে, InputStream এবং Reader ক্লাসগুলি ব্যবহার করে ডেটা পড়া হয়, যেখানে OutputStream এবং Writer ক্লাসগুলি ডেটা লেখার জন্য ব্যবহৃত হয়। InputStream এবং OutputStream বাইট-ভিত্তিক স্ট্রিম, এবং Reader এবং Writer ক্যারেক্টার-ভিত্তিক স্ট্রিমের জন্য ব্যবহৃত হয়।
Apache Commons IO লাইব্রেরি এই স্ট্রিম এবং রিডারদের মধ্যে ডেটা ট্রান্সফার করতে IOUtils ক্লাসের মাধ্যমে সহজ মেথড প্রদান করে।
এটি সাধারণত তখন ব্যবহৃত হয় যখন আপনি একটি বাইট স্ট্রিম থেকে অন্য বাইট স্ট্রিমে ডেটা কপি করতে চান।
IOUtils.copy() মেথড ব্যবহার করে খুব সহজেই InputStream থেকে OutputStream-এ ডেটা কপি করা যেতে পারে।
উদাহরণ: InputStream থেকে OutputStream এ ডেটা কপি করা
import org.apache.commons.io.IOUtils;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class StreamDataTransferExample {
public static void main(String[] args) {
try (FileInputStream inputStream = new FileInputStream("sourceFile.txt");
FileOutputStream outputStream = new FileOutputStream("destinationFile.txt")) {
// InputStream থেকে OutputStream এ ডেটা কপি করা
IOUtils.copy(inputStream, outputStream);
System.out.println("Data copied successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
আউটপুট:
Data copied successfully!
এখানে:
ক্যরেক্টার-ভিত্তিক স্ট্রিমের ক্ষেত্রে, Reader থেকে Writer-এ ডেটা কপি করার জন্যও আপনি IOUtils.copy() ব্যবহার করতে পারেন। এটি InputStream এবং OutputStream এর মতোই কাজ করে, তবে এখানে Reader এবং Writer ক্লাস ব্যবহার করা হয়।
উদাহরণ: Reader থেকে Writer এ ডেটা কপি করা
import org.apache.commons.io.IOUtils;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class ReaderWriterExample {
public static void main(String[] args) {
try (FileReader reader = new FileReader("sourceFile.txt");
FileWriter writer = new FileWriter("destinationFile.txt")) {
// Reader থেকে Writer এ ডেটা কপি করা
IOUtils.copy(reader, writer);
System.out.println("Data copied successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
আউটপুট:
Data copied successfully!
এখানে:
কখনও কখনও আপনাকে একটি InputStream থেকে একটি Writer-এ ডেটা পাঠাতে হতে পারে। এই পরিস্থিতিতে, প্রথমে InputStream থেকে বাইট ডেটা পড়া হয়, তারপর Writer এ ক্যারেক্টার আউটপুট হিসেবে লিখা হয়।
উদাহরণ: InputStream থেকে Writer এ ডেটা কপি করা
import org.apache.commons.io.IOUtils;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
public class InputStreamToWriterExample {
public static void main(String[] args) {
try (FileInputStream inputStream = new FileInputStream("sourceFile.txt");
FileWriter writer = new FileWriter("destinationFile.txt")) {
// InputStream থেকে Writer এ ডেটা কপি করা
IOUtils.copy(inputStream, writer, "UTF-8");
System.out.println("Data copied successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
আউটপুট:
Data copied successfully!
এখানে:
IOUtils ক্লাসটি স্ট্রিম এবং রিডার-রাইটার ডেটা ট্রান্সফার ছাড়াও অন্যান্য অনেক কার্যকরী মেথড সরবরাহ করে, যেমন:
উদাহরণ: InputStream থেকে byte array তে ডেটা কনভার্ট করা
import org.apache.commons.io.IOUtils;
import java.io.FileInputStream;
import java.io.IOException;
public class StreamToByteArrayExample {
public static void main(String[] args) {
try (FileInputStream inputStream = new FileInputStream("sourceFile.txt")) {
// InputStream থেকে byte array তে ডেটা কনভার্ট করা
byte[] byteArray = IOUtils.toByteArray(inputStream);
System.out.println("Data as byte array: ");
for (byte b : byteArray) {
System.out.print(b + " ");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
আউটপুট:
Data as byte array: 72 101 108 108 111 32 116 104 105 115 32 105 115 32 97 110 32 101 120 97 109 112 108 101 32 102 105 108 101 46
এখানে:
Apache Commons IO লাইব্রেরি আপনাকে স্ট্রিম এবং রিডার/রাইটার ভিত্তিক ডেটা ট্রান্সফার দ্রুত এবং সুনির্দিষ্টভাবে সম্পাদন করতে সহায়তা করে।
common.read_more